# Fix variable names
# Create new variables
# Merge data sets
# Reshape data sets
# Deal with missing data
# Take transforms of variables
# Check on and remove inconsistent values
##########     Fix variable names     ##########

#fileUrl1 <- "https://dl.dropbox.com/u/7710864/data/reviews-apr29.csv"
#fileUrl2 <- "https://dl.dropbox.com/u/7710864/data/solutions-apr29.csv"
#download.file(fileUrl1,destfile="./data/reviews.csv")
#download.file(fileUrl2,destfile="./data/solutions.csv")
reviews <- read.csv("./data/reviews.csv"); 
solutions <- read.csv("./data/solutions.csv")

basic_summarize_data(reviews)     
basic_summarize_data(solutions) 

reviews.c <- basic_names_cleaning(reviews)

timeRanges <- cut(reviews$time_left,seq(0,3600,by=600))
table(timeRanges,useNA="ifany")

#para hacer cortes por quantiles (cada rango tiene aprox el mismo numero de elementos, pero no estan igualmente distribuidos)
library(Hmisc)
timeRanges<- cut2(reviews$time_left,g=6)
table(timeRanges,useNA="ifany")
# añadimos la nueva variable
reviews.c$timeRanges <- timeRanges


######  Merge data set
# si no le digo nada busca por nombres comunes
merged <- merge(reviews,solutions,all=TRUE)
# mejor por sus FKs
merged <- merge(reviews,solutions,by.x="solution_id",by.y="id",all=TRUE)
head(merged[,1:6],3)

######  Sort data sets por reviewer id
# los revisores estan desordenados
merged$reviewer_id[1:10]
#si queremos ordenar los datos por revisor
order(merged$reviewer_id)[1:10]
# y ahora hacemos efectivos los cambios 
#(FIJARSE que order ordena todas la cols (pq devuelve los nuevos indices, no los elementos ordenados como hace sort)
sortedData <- merged[order(merged$reviewer_id),]
#ahora ordenamos por el reviewer y por luego por el id
sortedData <- merged[order(merged$reviewer_id,merged$id),]


######  Reshape 
library(reshape2)
misShaped <- as.data.frame(matrix(c(NA,5,1,4,2,3),byrow=TRUE,nrow=3))
names(misShaped) <- c("treatmentA","treatmentB")
misShaped$people <- c("John","Jane","Mary")
print(misShaped)
print(melt(misShaped,id.vars="people",variable.name="treatment",value.name="value"))


